package Solutions

func maxProduct__(nums []int) int {
	var max, maxAbs = 0, 0
	var ans = -(1<<31 - 1)
	for i := 0; i < len(nums); i++ {
		if nums[i] == 0 {
			max = 0
			maxAbs = 0
			if ans < 0 {
				ans = 0
			}
		} else if nums[i] < 0 {
			t := maxAbs
			if max == 0 {
				maxAbs = nums[i]
			} else {
				maxAbs = max * nums[i]
			}
			if t == 0 {
				max = 0
			} else {
				max = t * nums[i]
				if max > ans {
					ans = max
				}
			}
			if maxAbs > ans {
				ans = maxAbs
			}

		} else {
			if max == 0 {
				max = nums[i]
			} else {
				max *= nums[i]
			}
			maxAbs *= nums[i]

			if max > ans {
				ans = max
			}

		}
	}

	return ans
}

// func abs(i int){
//     if i>=0{
//         return i
//     }
//     return -i
// }
